package com.ruoyi.app.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;


/**
 * APP用户动态视图对象 app_team_list
 *
 * @author heike
 * @date 2023-08-17
 */
@Data
@ExcelIgnoreUnannotated
public class AppTeamListVo extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @ExcelProperty(value = "ID")
    private Long id;

    /**
     * 用户ID
     */
    @ExcelProperty(value = "用户ID")
    private Long userId;

    /**
     * 发布任务的标题
     */
    private String title;

    /**
     * 动态内容
     */
    @ExcelProperty(value = "动态内容")
    private String context;

    /**
     * 活动群组
     */
    @ExcelProperty(value = "活动群组")
    private String groupId;


    /**
     * 动态图片，多个图片,分割
     */
    @ExcelProperty(value = "动态图片，多个图片,分割")
    private String images;

    /**
     * 类型ID
     */
    @ExcelProperty(value = "类型ID")
    private Long teamType;

    /**
     * 选择位置
     */
    @ExcelProperty(value = "选择位置")
    private String address;

    /**
     * 经度
     */
    @ExcelProperty(value = "经度")
    private BigDecimal longitude;

    /**
     * 纬度
     */
    @ExcelProperty(value = "纬度")
    private BigDecimal latitude;

    /**
     * 任务大分类
     */
    @ExcelProperty(value = "任务大分类")
    private Long type;

    /**
     * 状态(0=展示，1=不展示，2=待审核)
     */
    @ExcelProperty(value = "状态(0=活动中，1=驳回，2=审核中,3=完成,4=已取消)")
    private String status;

    /**
     * 动态范围
     */
    @ExcelProperty(value = "动态范围")
    private String scope;

    /**
     * 性别要求(0=男1=女2=不限)
     */
    @ExcelProperty(value = "性别要求(0=男1=女2=不限)")
    private String sexNeed;

    /**
     * 费用方式
     */
    @ExcelProperty(value = "费用方式")
    private String cost;

    /**
     * 费用方式名称
     */
    @ExcelProperty(value = "费用方式")
    private String costName;

    /**
     * 招募人数
     */
    @ExcelProperty(value = "招募人数")
    private Integer number;

    /**
     * 参加人数
     */
    @ExcelProperty(value = "参加人数")
    private Integer inNumber;

    /**
     * 同意参与的人数
     */
    @ExcelProperty(value = "同意参与的人数")
    private Integer applicantNumber;

    /**
     * 报名人数列表
     */
    @ExcelProperty(value = "报名人数列表")
    private List<AppTeamApplyVo> appTeamApplies;

    /**
     * 开始时间
     */
    @ExcelProperty(value = "开始时间")
    private Long startTime;

    /**
     * 结束时间
     */
    @ExcelProperty(value = "结束时间")
    private Long endTime;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 点赞列表
     */
    private List<AppTeamLikeVo> likeVos;

    /**
     * 点赞数量
     */
    private Integer likeVosNumber = 0;

    /**
     * 当前用户是否点赞
     * true 已点赞 false 未点赞
     */
    private Boolean userLike = false;

    /**
     * 评论数量
     */
    private Integer commentVosNumber = 0;

    /**
     * 评论列表
     */
    private List<AppTeamCommentVo> commentVos;

    /**
     * 发布任务用户信息
     */
    private UserVo userVo;

    /**
     * 视频/图片信息
     */
    private List<AppTeamVideoVo> videoVos;

    /**
     * 大分类名称
     */
    private String typeName;

    /**
     * 分类名称
     */
    private String teamTypeName;

    /**
     * 分类实体
     */
    private AppTeamTypeVo teamTypeVo;

    /**
     * 大分类实体
     */
    private AppTeamTotalTypeVo teamTotalType;

    /**
     * 任务时间格式化
     */
    private String createTimeFormat;

    /**
     * 距离千米
     */
    private Integer distance;

    /**
     * 距离信息
     */
    private String distanceText;

    /**
     * 图片信息
     */
    private List<String> teamImages;

    /**
     * 是否报名
     */
    private Boolean isJoin;

    /**
     * 是否已经评价
     * false = 未评价，ture = 评价
     */
    private Boolean isEvaluate;

    /**
     * 参加活动的用户列表
     */
    private List<AppUserVo> appUserVos;


    /**
     * 开始时间
     */
    @ExcelProperty(value = "开始时间")
    private String startTimFormat;

    /**
     * 结束时间
     */
    @ExcelProperty(value = "结束时间")
    private String endTimeFormat;
}
